package com.businesscard.system.service;

import com.businesscard.system.entity.UserGroup;
import com.businesscard.system.entity.User;

import java.util.List;

/**
 * 用户组服务接口
 */
public interface UserGroupService {
    
    /**
     * 创建用户组
     * @param group 用户组信息
     * @return 创建结果
     */
    boolean createGroup(UserGroup group);
    
    /**
     * 更新用户组
     * @param group 用户组信息
     * @return 更新结果
     */
    boolean updateGroup(UserGroup group);
    
    /**
     * 查询所有用户组
     * @return 用户组列表
     */
    List<UserGroup> getAllGroups();
    
    /**
     * 根据ID查询用户组
     * @param id 用户组ID
     * @return 用户组信息
     */
    UserGroup getGroupById(Integer id);
    
    /**
     * 根据名称查询用户组
     * @param groupName 用户组名称
     * @return 用户组信息
     */
    UserGroup getGroupByName(String groupName);
    
    /**
     * 删除用户组
     * @param id 用户组ID
     * @return 删除结果
     */
    boolean deleteGroup(Integer id);
    
    /**
     * 添加用户到用户组
     * @param groupId 用户组ID
     * @param userId 用户ID
     * @return 添加结果
     */
    boolean addUserToGroup(Integer groupId, Integer userId);
    
    /**
     * 从用户组移除用户
     * @param groupId 用户组ID
     * @param userId 用户ID
     * @return 移除结果
     */
    boolean removeUserFromGroup(Integer groupId, Integer userId);
    
    /**
     * 查询用户所属的用户组
     * @param userId 用户ID
     * @return 用户组列表
     */
    List<UserGroup> getGroupsByUserId(Integer userId);
    
    /**
     * 查询用户组中的所有用户
     * @param groupId 用户组ID
     * @return 用户列表
     */
    List<User> getUsersByGroupId(Integer groupId);
    
    /**
     * 检查用户是否在用户组中
     * @param groupId 用户组ID
     * @param userId 用户ID
     * @return 是否在用户组中
     */
    boolean isUserInGroup(Integer groupId, Integer userId);
} 